home *** CD-ROM | disk | FTP | other *** search
/ Game Cracker (Expanded Edition) / Game Cracker (Expanded Edition).iso / cracks / SV_FROGR.ZIP / Fogger.txt < prev    next >
Encoding:
Text File  |  1998-11-27  |  19.4 KB  |  457 lines

  1.  
  2. Free Information Xchange '97 presents:
  3.  
  4. Frogger - CD Crack by Static Vengeance
  5.  
  6. Requirements:
  7. Hex Editor and Full install
  8.  
  9.     Frogger has be revamped and "3D'ed" but like most games now a days has some annoying CD check
  10. somewhere.  That's unacteptable to me, I want to play the game; not go searching for the CD it came on.
  11. So as usual we'll be disassembling this game and looking for the routines responsible for the CD check.
  12. Once we find those routines we'll look for a way to defeat it so we end up with a cracked version on
  13. the old hard drive.  The first thing to do is to run W32Dasm on the frogger.exe and when it's done go
  14. up to the title bar and select "Refs" from the menu and drop down to "String data references" from there
  15. grab the slider bar and scroll down to the string "Please insert the Frogger CD"  Double clicking this
  16. string puts us in the middle of CD check routine.  Aren't all my tutorials beginning to sound the same?
  17. Anyways here's that code:
  18.  
  19. * Referenced by a CALL at Addresses:
  20. |:00403681   , :004038DC   
  21. |
  22. :004037E0 81EC00010000            sub esp, 00000100
  23. :004037E6 C6059458490000          mov byte ptr [00495894], 00
  24.  
  25. * Possible StringData Ref from Data Obj ->"FROGGER"
  26.                                   |
  27. :004037ED 68ECE24600              push 0046E2EC
  28. :004037F2 E8A9660400              call 00449EA0      <-- Gets drive type & volume
  29. :004037F7 83C404                  add esp, 00000004
  30. :004037FA A294584900              mov byte ptr [00495894], al
  31. :004037FF 84C0                    test al, al
  32. :00403801 7509                    jne 0040380C
  33. :00403803 33C0                    xor eax, eax
  34. :00403805 81C400010000            add esp, 00000100
  35. :0040380B C3                      ret
  36.  
  37. * Referenced by a (U)nconditional or (C)onditional Jump at Address:
  38. |:00403801(C)
  39. |
  40. :0040380C A294584900              mov byte ptr [00495894], al
  41. :00403811 84C0                    test al, al
  42. :00403813 744E                    je 00403863
  43. :00403815 8D4C2400                lea ecx, dword ptr [esp]
  44.  
  45. * Possible StringData Ref from Data Obj ->":\video\intro.rpl"  <-- Intro off the CD
  46.                                   |
  47. :00403819 68D8E24600              push 0046E2D8
  48. :0040381E 0FBEC0                  movsx eax, al
  49. :00403821 50                      push eax
  50.  
  51. * Possible StringData Ref from Data Obj ->"%c%s"
  52.                                   |
  53. :00403822 68D0E24600              push 0046E2D0
  54. :00403827 51                      push ecx
  55. :00403828 E853F80500              call 00463080
  56. :0040382D 8D4C2410                lea ecx, dword ptr [esp+10]
  57. :00403831 83C410                  add esp, 00000010
  58. :00403834 6800800000              push 00008000
  59. :00403839 51                      push ecx
  60. :0040383A E8716B0600              call 0046A3B0
  61. :0040383F 83C408                  add esp, 00000008
  62. :00403842 83F8FF                  cmp eax, FFFFFFFF
  63. :00403845 7415                    je 0040385C
  64. :00403847 50                      push eax
  65. :00403848 E8B3560600              call 00468F00
  66. :0040384D 83C404                  add esp, 00000004
  67. :00403850 B801000000              mov eax, 00000001
  68. :00403855 81C400010000            add esp, 00000100
  69. :0040385B C3                      ret
  70.  
  71. * Referenced by a (U)nconditional or (C)onditional Jump at Address:
  72. |:00403845(C)
  73. |
  74. :0040385C C6059458490000          mov byte ptr [00495894], 00
  75.  
  76. * Referenced by a (U)nconditional or (C)onditional Jump at Address:
  77. |:00403813(C)
  78. |
  79. :00403863 33C0                    xor eax, eax
  80. :00403865 81C400010000            add esp, 00000100
  81. :0040386B C3                      ret
  82.  
  83.  
  84. :0040386C CC                      int 03
  85. :0040386D CC                      int 03
  86. :0040386E CC                      int 03
  87. :0040386F CC                      int 03
  88. :00403870 81EC00010000            sub esp, 00000100
  89. :00403876 53                      push ebx
  90.  
  91. * Reference To: KERNEL32.GetUserDefaultLCID, Ord:0148h
  92.                                   |
  93. :00403877 FF15E4944A00            Call dword ptr [004A94E4]
  94. :0040387D 6625FF03                and ax, 03FF
  95. :00403881 8B8C240C010000          mov ecx, dword ptr [esp+0000010C]
  96. :00403888 81F910010000            cmp ecx, 00000110
  97. :0040388E 742B                    je 004038BB
  98. :00403890 81F911010000            cmp ecx, 00000111
  99. :00403896 740C                    je 004038A4
  100. :00403898 33C0                    xor eax, eax
  101. :0040389A 5B                      pop ebx
  102. :0040389B 81C400010000            add esp, 00000100
  103. :004038A1 C21000                  ret 0010
  104.  
  105. * Referenced by a (U)nconditional or (C)onditional Jump at Address:
  106. |:00403896(C)
  107. |
  108. :004038A4 8B8C2410010000          mov ecx, dword ptr [esp+00000110]
  109. :004038AB 81E1FFFF0000            and ecx, 0000FFFF
  110. :004038B1 83F901                  cmp ecx, 00000001
  111. :004038B4 7426                    je 004038DC
  112. :004038B6 83F902                  cmp ecx, 00000002
  113. :004038B9 744A                    je 00403905
  114.  
  115. * Referenced by a (U)nconditional or (C)onditional Jump at Address:
  116. |:0040388E(C)
  117. |
  118.  
  119. * Possible Reference to String Resource ID=00041: "Please insert the Frogger CD" <-- need explaination?
  120.                                   |
  121. :004038BB B929000000              mov ecx, 00000029
  122. :004038C0 25FFFF0000              and eax, 0000FFFF
  123. :004038C5 83E807                  sub eax, 00000007
  124. :004038C8 83F809                  cmp eax, 00000009
  125. :004038CB 776E                    ja 0040393B
  126. :004038CD 33D2                    xor edx, edx
  127. :004038CF 8A9090394000            mov dl, byte ptr [eax+00403990]
  128. :004038D5 FF24957C394000          jmp dword ptr [4*edx+0040397C]
  129.  
  130. * Referenced by a (U)nconditional or (C)onditional Jump at Address:
  131. |:004038B4(C)
  132. |
  133. :004038DC E8FFFEFFFF              call 004037E0
  134. :004038E1 83F801                  cmp eax, 00000001
  135. :004038E4 7510                    jne 004038F6
  136. :004038E6 8B842408010000          mov eax, dword ptr [esp+00000108]
  137. :004038ED 6A01                    push 00000001
  138. :004038EF 50                      push eax
  139.  
  140. * Reference To: USER32.EndDialog, Ord:00B4h
  141.                                   |
  142. :004038F0 FF1558954A00            Call dword ptr [004A9558]
  143.  
  144. * Referenced by a (U)nconditional or (C)onditional Jump at Address:
  145. |:004038E4(C)
  146. |
  147. :004038F6 B801000000              mov eax, 00000001
  148. :004038FB 5B                      pop ebx
  149. :004038FC 81C400010000            add esp, 00000100
  150. :00403902 C21000                  ret 0010
  151.  
  152. * Referenced by a (U)nconditional or (C)onditional Jump at Address:
  153. |:004038B9(C)
  154. |
  155. :00403905 8B842408010000          mov eax, dword ptr [esp+00000108]
  156. :0040390C 6A00                    push 00000000
  157. :0040390E 50                      push eax
  158.  
  159. * Reference To: USER32.EndDialog, Ord:00B4h
  160.                                   |
  161. :0040390F FF1558954A00            Call dword ptr [004A9558]
  162. :00403915 33C0                    xor eax, eax
  163. :00403917 5B                      pop ebx
  164. :00403918 81C400010000            add esp, 00000100
  165. :0040391E C21000                  ret 0010
  166.  
  167. * Possible Reference to String Resource ID=00045: "Bitte die Frogger-CD einlegen" <-- die, frog, die
  168.                                   |                                               <-- hahahahahaha
  169. :00403921 B92D000000              mov ecx, 0000002D
  170. :00403926 EB13                    jmp 0040393B
  171.  
  172. * Possible Reference to String Resource ID=00042: "Inserte el CD Frogger"
  173.                                   |
  174. :00403928 B92A000000              mov ecx, 0000002A
  175. :0040392D EB0C                    jmp 0040393B
  176.  
  177. * Possible Reference to String Resource ID=00044: "Veuillez insΘrer le CD Frogger"
  178.                                   |
  179. :0040392F B92C000000              mov ecx, 0000002C
  180. :00403934 EB05                    jmp 0040393B
  181.  
  182. * Possible Reference to String Resource ID=00043: "Inserire il CD Frogger"
  183.                                   |
  184. :00403936 B92B000000              mov ecx, 0000002B
  185.  
  186. * Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
  187. |:004038CB(C), :00403926(U), :0040392D(U), :00403934(U)
  188. |
  189. :0040393B 8D442404                lea eax, dword ptr [esp+04]
  190. :0040393F 6800010000              push 00000100
  191. :00403944 50                      push eax
  192. :00403945 51                      push ecx
  193. :00403946 8B0D5C284800            mov ecx, dword ptr [0048285C]
  194. :0040394C 8B11                    mov edx, dword ptr [ecx]
  195. :0040394E 52                      push edx
  196.  
  197. * Reference To: USER32.LoadStringA, Ord:0183h
  198.                                   |
  199. :0040394F FF155C954A00            Call dword ptr [004A955C]
  200. :00403955 8D4C2404                lea ecx, dword ptr [esp+04]
  201. :00403959 8B942408010000          mov edx, dword ptr [esp+00000108]
  202. :00403960 51                      push ecx
  203.  
  204. * Possible Reference to Dialog: DialogID_0078, CONTROL_ID:0409, ""
  205.                                   |
  206. :00403961 6809040000              push 00000409
  207. :00403966 52                      push edx
  208.  
  209. * Reference To: USER32.SetDlgItemTextA, Ord:01F1h
  210.                                   |
  211. :00403967 FF1554954A00            Call dword ptr [004A9554]
  212. :0040396D B801000000              mov eax, 00000001
  213. :00403972 5B                      pop ebx
  214. :00403973 81C400010000            add esp, 00000100
  215. :00403979 C21000                  ret 0010
  216.  
  217.     After running through some calls and tracing jumps I went back up to the beginning and traced
  218. backwards to calling routines.
  219.  
  220. * Referenced by a CALL at Addresses:
  221. |:00402EC1   , :00406731   
  222. |
  223. :00403680 53                      push ebx
  224. :00403681 E85A010000              call 004037E0    <-- Find Frogger CD
  225. :00403686 85C0                    test eax, eax
  226. :00403688 7524                    jne 004036AE
  227. :0040368A 6A00                    push 00000000
  228. :0040368C A15C284800              mov eax, dword ptr [0048285C]
  229. :00403691 6870384000              push 00403870
  230. :00403696 90                      nop
  231. :00403697 8B10                    mov edx, dword ptr [eax]
  232. :00403699 8B4804                  mov ecx, dword ptr [eax+04]
  233. :0040369C 51                      push ecx
  234.  
  235. * Possible Reference to Dialog: DialogID_0078 
  236.                                   |
  237. :0040369D 6A78                    push 00000078
  238. :0040369F 52                      push edx
  239.  
  240. * Reference To: USER32.DialogBoxParamA, Ord:008Eh
  241.                                   |
  242. :004036A0 FF1514954A00            Call dword ptr [004A9514]
  243. :004036A6 85C0                    test eax, eax
  244. :004036A8 7504                    jne 004036AE               <-- remember the mov eax, 00000001
  245. :004036AA 33C0                    xor eax, eax               <-- from the above routine?
  246. :004036AC 5B                      pop ebx
  247. :004036AD C3                      ret
  248.  
  249. * Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
  250. |:00403688(C), :004036A8(C)
  251. |
  252. :004036AE B801000000              mov eax, 00000001
  253. :004036B3 5B                      pop ebx
  254. :004036B4 C3                      ret
  255.  
  256.     Okay, let's back trace it to the calling routines (from 402EC1 & 406731) and check
  257. it out there.
  258.  
  259. * Referenced by a CALL at Address:
  260. |:00463406   
  261. |
  262. :00402EB0 83EC10                  sub esp, 00000010
  263. :00402EB3 53                      push ebx
  264. :00402EB4 56                      push esi
  265. :00402EB5 E806080000              call 004036C0
  266. :00402EBA C6059458490000          mov byte ptr [00495894], 00
  267. :00402EC1 E8BA070000              call 00403680                <-- Call to play into & CD check
  268. :00402EC6 85C0                    test eax, eax
  269. :00402EC8 750F                    jne 00402ED9                 <-- Need to take this to continue
  270. :00402ECA E8A1080000              call 00403770
  271. :00402ECF 33C0                    xor eax, eax
  272. :00402ED1 5E                      pop esi
  273. :00402ED2 5B                      pop ebx
  274. :00402ED3 83C410                  add esp, 00000010
  275. :00402ED6 C21000                  ret 0010
  276.  
  277. * Referenced by a (U)nconditional or (C)onditional Jump at Address:
  278. |:00402EC8(C)
  279. |
  280. :00402ED9 A094584900              mov al, byte ptr [00495894]   <-- Set up to continue the game
  281. :00402EDE 50                      push eax
  282. :00402EDF E82C090400              call 00443810
  283. :00402EE4 8B442420                mov eax, dword ptr [esp+20]
  284. :00402EE8 83C404                  add esp, 00000004
  285. :00402EEB 6A00                    push 00000000
  286. :00402EED 50                      push eax
  287. :00402EEE 68E0354000              push 004035E0
  288. :00402EF3 E8E8670400              call 004496E0
  289. :00402EF8 83C40C                  add esp, 0000000C
  290. :00402EFB 85C0                    test eax, eax
  291. :00402EFD 750F                    jne 00402F0E
  292. :00402EFF E86C080000              call 00403770
  293. :00402F04 33C0                    xor eax, eax
  294. :00402F06 5E                      pop esi
  295. :00402F07 5B                      pop ebx
  296. :00402F08 83C410                  add esp, 00000010
  297. :00402F0B C21000                  ret 0010
  298.  
  299.     So if you NOP the call to the CD check and change the conditional jump to jump always you have
  300. half of the copy protection removed.  Ok, now let's check the other call:
  301.  
  302. * Referenced by a CALL at Address:
  303.  
  304. |:0043CBC4   
  305. |
  306. :00406730 56                      push esi
  307. :00406731 E84ACFFFFF              call 00403680          <-- Check for the CD
  308. :00406736 85C0                    test eax, eax
  309. :00406738 750C                    jne 00406746           <-- Need to take this one
  310. :0040673A C70550BB4800FFFFFFFF    mov dword ptr [0048BB50], FFFFFFFF  <-- sets up "quit to win95"
  311. :00406744 5E                      pop esi
  312. :00406745 C3                      ret
  313.  
  314. * Referenced by a (U)nconditional or (C)onditional Jump at Address:
  315. |:00406738(C)
  316. |
  317. :00406746 E8B5C90000              call 00413100          <-- Continue with the game
  318. :0040674B 85C0                    test eax, eax
  319. :0040674D 7420                    je 0040676F
  320. :0040674F C705904A490001000000    mov dword ptr [00494A90], 00000001
  321. :00406759 C70500E2460000000000    mov dword ptr [0046E200], 00000000
  322. :00406763 C70504E24600FFFFFFFF    mov dword ptr [0046E204], FFFFFFFF
  323. :0040676D EB0A                    jmp 00406779
  324.  
  325. * Referenced by a (U)nconditional or (C)onditional Jump at Address:
  326. |:0040674D(C)
  327. |
  328. :0040676F C705904A490000000000    mov dword ptr [00494A90], 00000000
  329.  
  330. * Referenced by a (U)nconditional or (C)onditional Jump at Address:
  331. |:0040676D(U)
  332. |
  333. :00406779 C7055854490000000000    mov dword ptr [00495458], 00000000
  334. :00406783 A1984A4900              mov eax, dword ptr [00494A98]
  335. :00406788 C1E002                  shl eax, 02
  336.  
  337.   -- the rest of the game program --
  338.  
  339.     Changing this call to NOP's and chaning the conditional jump to jump always will completely
  340. remove the CD checks and allow you to play Frogger from your hard drive without having to insert the
  341. Frogger CD.  One nice side effect is you skip the hasbro into video at the start of the game and the
  342. short intro in the "attract" mode of the game.  However you loose the ending and the credits video when
  343. you complete the game.  None of these videos are copied to your hard drive during installation.  when
  344. the program needs them it goes through a routine that plays the right video at 401FD0:
  345.  
  346. * Referenced by a CALL at Addresses:
  347. |:0042BC70   , :0043C49C   , :0043C4DC   , :0043F030   
  348. |
  349. :00401FD0 81EC40010000            sub esp, 00000140
  350. :00401FD6 53                      push ebx
  351. :00401FD7 56                      push esi
  352. :00401FD8 57                      push edi
  353. :00401FD9 6A00                    push 00000000
  354.  
  355. * Reference To: USER32.ShowCursor, Ord:0228h
  356.                                   |
  357. :00401FDB FF1508954A00            Call dword ptr [004A9508]
  358. :00401FE1 C7051CC2460001000000    mov dword ptr [0046C21C], 00000001
  359.  
  360. * Possible StringData Ref from Data Obj ->"Starting to Play Stream."
  361.                                   |
  362. :00401FEB 68BCC54600              push 0046C5BC
  363. :00401FF0 BF94584900              mov edi, 00495894
  364. :00401FF5 E8A6050000              call 004025A0
  365.   -- snip --
  366. :00402030 F3                      repz
  367. :00402031 A4                      movsb
  368.  
  369. * Possible StringData Ref from Data Obj ->":\video\"   <-- pull it off CD
  370.                                   |
  371. :00402032 BFB0C54600              mov edi, 0046C5B0
  372. :00402037 B9FFFFFFFF              mov ecx, FFFFFFFF
  373. :0040203C 2BC0                    sub eax, eax
  374. :0040203E F2                      repnz
  375.   -- snip --
  376.  
  377. * Possible StringData Ref from Data Obj ->"InitMovie."  <-- get ready to play it
  378.                                   |
  379. :00402094 68A4C54600              push 0046C5A4
  380. :00402099 83E103                  and ecx, 00000003
  381. :0040209C F3                      repz
  382. :0040209D A4                      movsb
  383. :0040209E E8FD040000              call 004025A0
  384. :004020A3 8D442420                lea eax, dword ptr [esp+20]
  385. :004020A7 83C404                  add esp, 00000004
  386. :004020AA 6800004000              push 00400000
  387. :004020AF 50                      push eax
  388. :004020B0 6A00                    push 00000000
  389. :004020B2 6A00                    push 00000000
  390. :004020B4 68F8C14600              push 0046C1F8
  391.  
  392. * Reference To: winplay.Player_InitMovie, Ord:002Dh
  393.                                   |
  394. :004020B9 E8BC160400              Call 0044377A
  395. :004020BE 83C414                  add esp, 00000014
  396. :004020C1 8BF0                    mov esi, eax
  397. :004020C3 85F6                    test esi, esi
  398. :004020C5 740C                    je 004020D3
  399. :004020C7 33C0                    xor eax, eax
  400. :004020C9 5F                      pop edi
  401. :004020CA 5E                      pop esi
  402. :004020CB 5B                      pop ebx
  403. :004020CC 81C440010000            add esp, 00000140
  404. :004020D2 C3                      ret
  405.  
  406.     Anyways, if you kill the two calls I talked about, you end up with a cracked version of Frogger
  407. and it will not ask for the Frogger CD when you start.  The program has never come up and asked for the CD
  408. when trying to play the video clips.  Watching the original version run, it would go through the demo a
  409. couple of times, then play the short intro video.  The cracked program goes through the same steps but never
  410. plays the video or "complains" about not being able to load it in...  So you just need to make the edits to
  411. the frogger.exe file, make your edit by version: v1.001 is off the CD, v1.1e is the froggerpatch1.exe off the
  412. net.  Frogger v3.0e (and 3.0u) are off the net from the file froggerpatch3.exe
  413.  
  414. For V1.001 from the CD edit Frogger.exe
  415. ============================================
  416. Search for: E8 BA 07 00 00  at offset  8,833
  417. Change to : B8 01 00 00 00
  418.  
  419. Search for: E8 2A D0 FF FF  at offset 23,057
  420. Change to : B8 01 00 00 00
  421.  
  422.  
  423. For V1.1e from the net edit Frogger.exe
  424. ============================================
  425. Search for: E8 BA 07 00 00  at offset  8,897
  426. Change to : B8 01 00 00 00
  427.  
  428. Search for: E8 4A CF FF FF  at offset 23,345
  429. Change to : B8 01 00 00 00
  430.  
  431.  
  432. For V3.0e from the net edit Frogger.exe
  433. =============================================
  434. Search for: E8 1A 08 00 00  at offset 140,785
  435. Change to : B8 01 00 00 00
  436.  
  437. Search for: E8 2F 38 FF FF  at offset 194,012
  438. Change to : B8 01 00 00 00
  439.  
  440.  
  441. For V3.0u from the net edit Frogger.exe
  442. ============================================
  443. Search for: E8 1A 08 00 00  at offset  9,009
  444. Change to : B8 01 00 00 00
  445.  
  446. Search for: E8 3F CF FF FF  at offset 23,564
  447. Change to : B8 01 00 00 00
  448.  
  449.  
  450.     That's it for this one.  I hope you are learning something from these tutorials....  If one person
  451. out there has learned something from my work, then it's NOT a waste of time for me to write these up and
  452. I'll continue to do so.  If you can stand my grammer and my spelling - hahahahaha.... I needed a good laugh.
  453.  
  454.     I FiX'ed Frogger too!
  455.  
  456. Static Vengeance
  457.